reboot pod w9x z konzolovej apl.

Otázka od: Robert Suska

25. 6. 2004 14:52

ahojte!

moj problem je v tomto kode

program Project1;

{$APPTYPE CONSOLE}

uses
  Windows;

begin
  ExitWindowsEx(EWX_REBOOT, 0);
end.

je to velmi jednoducha konzolova aplikacia. ale problem je ze pod w98 tento
kod nejako nechce fungovat. Ked kod ktory som uviedol hore spustim zobrazi
sa hlasenie typu:
"Pred ukoncenim systemu windows musite ukoncit tento
program. Klepnutim...... atd"
Dalej ked do f() ExitWindowsEx pridam
parameter or EWX_FORCE tak sa aplikacia zobrazi, obrazovka blikne a nic sa
nestane. Ale uz ten genialny vyplod nezobrazi.... Dalej ked vyhodim toto
{$APPTYPE CONSOLE} tak vsetko funguje ako ma. Pc sa normalne rebootne a som
spokojny len problem je ze to mysi byt konzola. Vie mi niekto poradit ako
mam dosiahnut toho aby sa mi podarilo aj pod w9x rebootnut wokna z
konzolovej apl? Pod w2k a xp to funguje bez problemov. Samozrejme ze tam mam
kod typu

    SetPrivilege('SE_SHUTDOWN_NAME', True);
    tpResult := OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TTokenHd);
    if tpResult then
    begin
      tpResult := LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME,
TTokenPvg.Privileges[0].Luid);
      TTokenPvg.PrivilegeCount := 1;
      TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
      cbtpPrevious := SizeOf(rTTokenPvg);
      pcbtpPreviousRequired := 0;
      if tpResult then
        Windows.AdjustTokenPrivileges(TTokenHd, False, TTokenPvg,
cbtpPrevious, rTTokenPvg, pcbtpPreviousRequired);

dakujem za nakopnutie... uz neviem ako dalej...

S pozdravom,
Robo